package com.nineclock.common.exception;

import com.nineclock.common.entity.Result;
import com.nineclock.common.enums.ResponseEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @RestControllerAdvice = @ResponseBody + @ControllerAdvice
 * 统一异常处理类
 * @author 黑马程序员
 * @Company http://www.ithiema.com
 * @Version 1.0
 */
@RestControllerAdvice
@Slf4j
public class BasicExceptionHandler {

    //可以预料 的异常（自定义异常）
    @ExceptionHandler({ //此注解中，可以指定 该方法要处理的异常类型
          NcException.class
    })
    public Result handlerNcException(NcException e){
        e.printStackTrace();
        return Result.errorCodeMessage(e.getCode(), e.getMessage());
    }


    //没有预料 的异常(其他异常(Exception))
    @ExceptionHandler({
            Exception.class
    })
    public Result handlerOtherException(Exception e){
        e.printStackTrace();
        return Result.errorCodeMessage(
                ResponseEnum.SERVER_ERROR.getCode(), ResponseEnum.SERVER_ERROR.getMessage());
    }

}
